package org.example.config;

import cn.dev33.satoken.interceptor.SaInterceptor;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpUtil;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.Arrays;
import java.util.List;

/**
 *  Sa-Token 权限认证配置
 */
@Configuration
public class SaTokenConfigure implements WebMvcConfigurer {
    // 注册拦截器
 @Override
public void addInterceptors(InterceptorRegistry registry) {
    // 添加 Sa-Token 拦截器，配置拦截规则
    registry.addInterceptor(new SaInterceptor(handler -> {
        // 定义需要放行的路径
        List<String> notCheckPath = Arrays.asList(
            "/api/jwt/login",
            "/api/wx/login",
            "/api/carousel/selectAll",  // 如果有其他不需要检查登录的路径可以继续添加
            "/api/product/**",
                "/api/order/**"
        );


        // 路由匹配规则
        SaRouter.match("/**")
                .notMatch(notCheckPath)  // 排除不需要检查登录的路径
                .check(r -> StpUtil.checkLogin());  // 对匹配的路径进行登录检查

    })).addPathPatterns("/**");  // 应用到所有路径
}

}
